// pages/cart/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    address:{},//收货地址
    cart:{},//购物车数据
    allChecked:false,//全选按钮
    totalPrice:0,
    totalNum:0
  },
  //点击收货按钮
  handleChooseAddress(){
    wx.chooseAddress({
      success: (result) => {
        //存入缓存
        wx.setStorageSync('address', result)
      },
    })
  },
  //底部工具栏的计算
  setCart(cart){
     // 实现全选 空数组的every也是TRUE
     let allChecked=true;
     //const allChecked=cart.length>0?cart.every(v=>v.checked):false
     //实现购物车价格 和数量
     let totalPrice=0;
     let totalNum=0;
     cart.forEach(v=>{
       if(v.checked){
         totalPrice+=v.num*v.goods_price;
         totalNum+=v.num
       }else{
         allChecked=false
       }
     })
     // 判断购物车是否有数据
     allChecked=cart.length!=0?allChecked:false
     this.setData({
       cart,allChecked,totalPrice,totalNum
     })
     wx.setStorageSync('cart', cart)
  },
  //商品的选中
  handItemChange(e){
    //获取被修改的商品的id
    const goods_id=e.currentTarget.dataset.id;
    //获取购物车数组
    let {cart}=this.data;
    //找到被修改的数组
    let index=cart.findIndex(v=>v.goods_id===goods_id);
    // 选中状态取反
    cart[index].checked=!cart[index].checked;
    this.setCart(cart)
  },
  // 商品的全选
  handleItemAllCheck(){
    let {cart,allChecked}=this.data
    //2.修改值
    allChecked=!allChecked;
    //3.循环修改cart数组中商品选中状态
    cart.forEach(v=>v.checked=allChecked);
    //修改后的值 设置回data中 和 缓存中
    this.setCart(cart)
  },
  //商品数量的编辑
  handleItemNumEdit(e){
    const {operation,id}=e.currentTarget.dataset;
    //获取购物车数组
    let {cart}=this.data;
    //遍历数组找到当前商品的索引
   const index=cart.findIndex(v=>v.goods_id===id);
   if(cart[index].num===1&&operation===-1){
    wx.showModal({
      title: '提示',
      content: '您是否要删除',
      success:(res)=>{
        if (res.confirm) {
          console.log('用户点击确定');
          cart.splice(index,1);
          this.setCart(cart)
        } else if (res.cancel) {
          console.log('用户点击取消')
        }
      }
    })
   }else{
    cart[index].num+=operation;
   }
   //设置缓存和data
   this.setCart(cart)
  },
  //结算
  handlePay(){
    const {address,totalNum}=this.data;
    //判断收货地址
    if(!address.userName){
      wx.showToast({
        title: '您没有添加地址',
        icon:'error'
      })
      return;
    }
    //判断有无商品
    if(totalNum===0){
      wx.showToast({
        title: '您没有选购商品',
        icon:'error'
      })
      return;
    }
    //跳转到支付
    wx.navigateTo({
      url: '/pages/pay/index',
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    //获取缓存中的收货地址信息
    let address=wx.getStorageSync('address');
    if(address){
          address.all=address.provinceName+address.cityName+address.countyName+address.detailInfo
    }
    //给data赋值
    this.setData({
      address
    })
    //获取缓存中的购物车数据
    let cart=wx.getStorageSync('cart')||[];
    this.setCart(cart)
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})